home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / dsp / bfltlib.exe / BCOS.C < prev    next >
Text File  |  1991-07-30  |  1KB  |  53 lines

  1. /**************************************************************
  2.   
  3.                  bcos.c
  4.   
  5.                  staff
  6.   
  7.                  07-30-91
  8.   
  9.            (C) Texas Instruments Inc., 1992 
  10.   
  11.            Refer to the file 'license.txt' included with this 
  12.            this package for usage and license information. 
  13.   
  14. *************************************************************/
  15. #include "bflt.h"
  16.  
  17. bfloat bcos(bfloat in)
  18. {
  19.    bfloat test;
  20.    long sign;
  21.    if(in.mantissa<0) in.mantissa = -in.mantissa;
  22.    test = bfix(bdiv(in,b_pi));
  23.    sign = b_long(test) & 0x1;    /* 0==quad 1|2,  1==quad 3|4  */
  24.    in = bsub(in,bmpy(test,b_pi));
  25.    in = bsub(in,b_pi_two);
  26.    if(in.mantissa < 0)
  27.    {
  28.      in.mantissa = -in.mantissa;
  29.      if(sign==0)
  30.        sign = 1;
  31.      else
  32.        sign = -1;
  33.    }
  34.    else
  35.    {
  36.      if(sign==0)
  37.        sign = -1;
  38.      else
  39.        sign = 1;
  40.    }
  41.    in = bsub(b_pi_two,in);
  42.    if(bcomp(in,b_pi_four)<0)
  43.      in = bcosx(in);
  44.    else
  45.    {
  46.      in = bsub(b_pi_two,in);
  47.      in = bmpy(in,bsinx(in));
  48.    }
  49.    if(sign<0)
  50.      in.mantissa = -in.mantissa;
  51.    return(in);
  52. }
  53.